The present invention relates generally to processing within a computing environment, and more specifically, to collected events using run-time instrumentation.
Computer processors execute transactions using increasingly complex branch prediction and instruction caching logic. These processes have been introduced to increase instruction throughput, and therefore processing performance. The introduction of logic for improving performance makes it difficult to predict with certainty how a particular software application will execute on the computer processor. During the software development process there is often a balance between functionality and performance. Software is executed at one or more levels of abstraction from the underlying hardware that is executing the software. When hardware is virtualized, an additional layer of abstraction is introduced. With the introduction of performance enhancing logic, and the various layers of abstraction it is difficult to precisely predict what is actually occurring at the hardware level when a program is executing. Without this information, software developers use more abstract methods, such as execution duration, memory usage, number of threads, etc., for optimizing the software application.
Runtime Instrumentation (RI) is designed to provide information that can be used in optimizing program execution functions, such as certain just-in-time software compilation scenarios and other program-optimizing processes. The intention is to provide information that can be used in fine tuning applications. Specific information in instrumented instruction streams can be very useful when subsequent analysis is performed.